/*
倒计时:
1.time自减-->每隔一秒执行
2.vue定时器插件  vueUse  useIntervalFn
*/
import { ref, computed } from 'vue'
import { useIntervalFn } from '@vueuse/core'
import dayjs from 'dayjs'
function useCutDown () {
  // 计时响应式数据
  const time = ref(0)
  // 逻辑: 每隔一秒执行
  // pause: 暂停 调用使计时器停止
  // resume: 开始 调用计时器开始
  const formatTime = computed(() => {
    // dayjs时间转换
    return dayjs.unix(time.value).format('mm分ss秒')
  })
  const { pause, resume } = useIntervalFn(() => {
    if (time.value === 0) {
      return pause()// 只是return 与之区别: 在0时停止, 并且停掉定时器
    }
    time.value--
  }, 1000)
  function start (startTimt) {
    // 调用时, 传进来开始的时间
    time.value = startTimt
    resume()
  }
  function stop () {
    pause()
  }
  return {
    time,
    start,
    stop,
    formatTime
  }
}
export default useCutDown
// 底层原理: 函数闭包 + 响应式的数据 -> 可复用的逻辑函数(在任何需要倒计时逻辑的业务中都可以使用此函数)
